본문으로 건너뛰기

운영체제 File System

용어정리

sector: FileSystem에서 R/W 기본단위

in HDD, 디스크 원판은 트랙들로 구성

트랙은 섹터들로 구성

block: ∑섹터, 저장공간 allocation의 기본단위

partition: 디스크를 논리적으로 구분한 것. parition마다 다른 FS를 사용할 수 있다.

File System 추상화

  • 디스크를 block sequence로 생각
  • R/W(접근)은 sector 단위로

File allocation 메소드

== [ File → blocks ]의 allocation

: 새 파일이 생성 → allocation 상황


Contiguous allocation

: 순차적 할당

장점 - R/W시 디스크에서 순차적으로 접근 ⇒ 빠름

단점

  • file 길이는 가변적이다
    • file 길이가 늘어날 때, 여윳공간이 없다
    • file 길이가 줄어들 때, 할당한 block을 안쓰게 되면 공간낭비
  • External Fragmentation(공간낭비)

Chained allocation

: linked list 방법 사용(block이 다음 block 포인터 소유)


장점: 공간효율(External Fragmentation X, 가변적인 상황 대처가능)

단점

  • R/W시 순차적 할당이 아니다보니 상대적으로 느림
    ⇒ 디스크가 물리적 접근을 하다보니 순차적 할당이 아니면 트랙을 옮기거나 해야할 수 있음

  • Random access시 중간에 위치한 block에만 접근하고 싶어도 head부터 FAT chain을 따라가서 접근해야 함 → 파일 크기가 클 때, 불필요한 오버헤드가 커짐

  • Meta Data(block 포인터)와 File Data가 한 곳에 저장 ⇒ 불안정
    ⇒ 한 block error 발생시 이후 다른 block도 접근하지 못함


FAT(File Allocation Table)

: (#block,#next) 정보를 저장한 테이블 in 메모리 ⇒ File Data와 Meta Data 분리

: FAT ∈ linked list allocation


FAT 파일 시스템에서 File 위치 찾는법

  1. Directory Entry
  2. (File Name: First Address) 정보 → block 접근
  3. FAT block 이동
  4. (#block,#next) 정보 → next block 접근


장점 - Meta Data와 File Data 분리로 안정성 확보

단점 - 메모리에 적재하다 보니 디스크의 용량이 아주 크면 메모리 부하↑


Indexed allocation

: 인덱스 block을 사용 ⇒ 메모리 적재가 아닌 디스크 적재이므로 메모리 제약↓


장점 - 메모리 제약↓, Random access 용이

단점 - 파일이 커서 인덱스 block 안에 모든 index를 못 담을 때..
⇒ indirect block이용 == 주소만을 저장한 block 주소를 우회해서 접근하면 된다


i-node(UNIX)

: Meta Data

: inode ≈ Indexed allocation


inode 구성

[ File Attributes, block0 주소, block1 주소, … , 포인터들을 담은 block 주소 ]

포인터들을 담은 block = indirect indexing

[ block10 주소, block11 주소, … ]


UNIX 파일 시스템에서 File 위치 찾는법

  1. Directory Entry
  2. (FileName : inode)정보 → inode Table(in HDD/SSD) 접근
  3. (inode → Data Blocks index)정보 → block 접근

* filename은 오직 디렉토리 엔트리 안에서만 쓰인다는 점..

장점 - 큰 파일도 커버 가능하다(by indirect block indexing → Extend Tree화)